package main

import (
	"fmt"
	"io"
	"os"
)

/*===读取文件===
- API -> func (f *File) Read(b []byte) (n int, err error)
- 它接收一个字节切片，返回读取的字节数和可能的具体错误，读到文件末尾时会返回0和io.EOF。
*/
func main() {
	readFile()
}

func readFile() {
	/* [01] 打开文件 */
	file, err := os.Open("/home/li/Code/go/learn/com.luckycoder.tdd/io/02readfile/test.txt")
	if err != nil {
		fmt.Println("file open failed,err:", err)
		return
	}

	defer func() {
		file.Close()
	}()
	/* [02] 创建切片，以read方法读取文件内容 */
	var tmp = make([]byte, 128)
	n, err := file.Read(tmp)
	/* [03] 判断是否读取完，以及状态 */
	if err == io.EOF {
		fmt.Println("文件读取完了……")
		return
	}
	if err != nil {
		fmt.Println("file read failed,err:", err)
		return
	}
	/* [04] 关闭连接，打印读取内容 */
	fmt.Printf("读取了 %d  字节数据\n", n)
	fmt.Println(string(tmp[:n]))
}
